home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 …ember: Reference Library / Apple Developer Reference Library (December 1999) (Disk 1).iso / mac / Technical Documentation / Develop / develop Issue 24 / develop Issue 24 code / Scriptable Database 1.0a15.sea / Scriptable Database 1.0a15 / Application / AbstractDocument.h / AbstractDocument.h
Encoding:
C/C++ Source or Header  |  1996-02-20  |  3.1 KB  |  93 lines  |  [TEXT/CWIE]

  1. #ifndef __ABSTRACTDOCUMENT__
  2. #define __ABSTRACTDOCUMENT__
  3.  
  4. #include <Types.h>
  5.  
  6. //
  7. // For class definition of TAbstractScriptableObject
  8. //
  9. #include "AbstractScriptableObject.h"
  10.  
  11. //
  12. // For definition of TAbstractIterator, base class of TDocumentLoop
  13. //
  14. #include "AbstractIterator.h"
  15.  
  16. #include "Int64.h"
  17.  
  18. class TFSSpecification;
  19.  
  20. //================================================================================
  21. // Class TAbstractDocument
  22. //================================================================================
  23. class TAbstractDocument : public TAbstractScriptableObject
  24. {
  25. private:
  26.     //
  27.     // We keep track of every document that has been created
  28.     //
  29.     TAbstractDocument*            fNextDocument;
  30.     TAbstractDocument*            fPreviousDocument;
  31.     
  32.     Boolean                     fCloseRequested;
  33.  
  34. public:
  35.     DeclareSmallClassData(TAbstractDocument, TAbstractScriptableObject);
  36.  
  37.                                 TAbstractDocument();
  38.     virtual                        ~TAbstractDocument();
  39.     void                        IAbstractDocument();
  40.  
  41.     virtual TAbstractScriptableObject*    Clone();
  42.     void                        PushOnDocumentList();
  43.     void                        RemoveFromDocumentList();
  44.     
  45. #if 0
  46.     virtual TAbstractDocument&    operator=(const TAbstractDocument& rhs);
  47. #endif
  48.  
  49.     virtual Int64                DocumentIdentifier() const = 0;
  50.     virtual Boolean                DocumentFSSpecification(TFSSpecification& fileSpec) const;
  51.             
  52.     virtual DescType            ObjectClass(const TAETransaction& t, Boolean recordedClass = false);
  53.     virtual Boolean                DerivedFromOSLClass(const TAETransaction& t, DescType objectClass);
  54.     
  55.     TAbstractDocument*            NextDocument() { return fNextDocument; };
  56.     TAbstractDocument*            PreviousDocument() { return fPreviousDocument; };
  57.     
  58.     void                        MarkForClose() { fCloseRequested = true; }
  59.     Boolean                        CloseRequested() { return fCloseRequested; }
  60. };
  61.  
  62. //
  63. // Returns the first open document
  64. //
  65. TAbstractDocument* FirstOpenDocument();
  66. TAbstractDocument* LastOpenDocument();
  67.  
  68. //================================================================================
  69. // Class TDocumentLoop
  70. //================================================================================
  71. class TDocumentLoop : public TAbstractObjectIterator
  72. {
  73. private:
  74.     TAbstractDocument*            fDocument;
  75.     Boolean                        fRemovedCurrent;
  76.     Boolean                        fDirection;
  77.         
  78. public:
  79.     virtual ~TDocumentLoop();
  80.                                 TDocumentLoop() : fRemovedCurrent(false) { fDocument = FirstOpenDocument(); };
  81.     virtual void                        Reset(const TAETransaction&, Boolean iterationDirection = kForwardIteration)    { fDirection = iterationDirection; fDocument = (iterationDirection == kForwardIteration) ? FirstOpenDocument() : LastOpenDocument(); }
  82.     virtual Boolean                        More(const TAETransaction&) const    { return fDocument != nil; };
  83.     virtual void                        Next(const TAETransaction&)            { if(fDocument && (fRemovedCurrent == false)) fDocument = (fDirection == kForwardIteration) ? fDocument->NextDocument() : fDocument->PreviousDocument(); fRemovedCurrent = false; };
  84.  
  85.     virtual TAbstractScriptableObject*    Current(const TAETransaction&)        { return this->CurrentDocument(); };
  86.     virtual void                        RemoveCurrent(const TAETransaction& t)    { this->RemoveCurrentDocument(t); };
  87.  
  88.     TAbstractDocument*            CurrentDocument()        { return fDocument; };
  89.     TAbstractDocument*            RemoveCurrentDocument(const TAETransaction& t);
  90. };
  91.  
  92. #endif
  93.